home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / Borland Visual dBASE Professiona v7.0 / DATA1.CAB / Sample_dBASE / Vcrbar.prg < prev    next >
Text File  |  1997-11-20  |  3KB  |  123 lines

  1. //------------------------------------------------------------------------
  2. //
  3. //  vcrbar.prg
  4. //
  5. //  Toolbar with VCR style rowset navigation tool buttons.
  6. //  To use:
  7. /* 
  8.      f = new FishBarsForm()     // a form with a defined rowset
  9.      DO vcrbar.prg WITH f       // for small tool buttons
  10.      DO vcrbar.prg WITH f, true // for large tool buttons
  11. */
  12. //  
  13. //  Visual dBASE Samples Group
  14. //
  15. //  $Revision:   1.6  $
  16. //
  17. //  Copyright (c) 1997, Borland International, Inc. All rights reserved.    
  18. //
  19. //------------------------------------------------------------------------  
  20.  
  21.    parameter FormObj, bLarge
  22.    local t, bNew
  23.    t    = null
  24.    bNew = false
  25.  
  26.    if ( PCOUNT() == 0 )
  27.       MSGBOX("To attach this toolbar to a form use: " + ;
  28.               CHR(13) + CHR(13) + ;
  29.              "DO " + PROGRAM() + " WITH <form reference>","Alert")
  30.    else
  31.       t := FindInstance("VcrToolbar")
  32.       if ( ( t == null ) or  ( not FormObj.mdi ) )
  33.          SET PROCEDURE TO (PROGRAM()) ADDITIVE
  34.          t = new VcrToolbar( bLarge )
  35.          bNew := true
  36.       endif
  37.       t.attach( FormObj ) 
  38.    endif
  39.  
  40. return ( bNew )
  41.  
  42. class VcrToolbar( bLarge ) of Toolbar
  43.    local sBitsize
  44.    sBitsize = IIF( bLarge, "TL_", "TS_" )
  45.  
  46.    this.flat     := true
  47.    this.text     := "VCR"
  48.    this.onUpdate := class::vcr_onUpdate
  49.  
  50.    this.tFirst = new ToolButton( this )
  51.    with ( this.tFirst )
  52.         bitmap   := "RESOURCE " + sBitsize + "FIRST"
  53.         speedTip := "First Row"
  54.         onClick  := class::tFirst_onClick
  55.    endwith
  56.  
  57.    this.tPrev = new ToolButton( this )
  58.    with ( this.tPrev )
  59.         bitmap   := "RESOURCE " + sBitsize + "PREV"
  60.         speedTip := "Previous Row"
  61.         onClick  := class::tPrev_onClick
  62.    endwith
  63.    
  64.    this.tNext = new ToolButton( this )
  65.    with ( this.tNext )
  66.         bitmap   := "RESOURCE " + sBitsize + "NEXT"
  67.         speedTip := "Next Row"
  68.         onClick  := class::tNext_onClick
  69.    endwith
  70.  
  71.    this.tLast = new ToolButton( this )
  72.    with ( this.tLast )
  73.         bitmap   := "RESOURCE " + sBitsize + "LAST"
  74.         speedTip := "Last Row"
  75.         onClick  := class::tLast_onClick
  76.    endwith
  77.  
  78.    function vcr_onUpdate
  79.       local bAtFirst, bAtLast, bRowset
  80.       bRowset = ( TYPE("this.form.rowset") == "O" )
  81.       if ( bRowset )
  82.          bAtFirst = this.form.rowset.atFirst()
  83.          bAtLast  = this.form.rowset.atLast() 
  84.          with ( this )
  85.             tFirst.enabled := ( NOT bAtFirst )
  86.             tPrev.enabled  := ( NOT bAtFirst )
  87.             tNext.enabled  := ( NOT bAtLast )
  88.             tLast.enabled  := ( NOT bAtLast )
  89.          endwith
  90.       else
  91.          with ( this )
  92.             tFirst.enabled := false
  93.             tPrev.enabled  := false
  94.             tNext.enabled  := false
  95.             tLast.enabled  := false
  96.          endwith
  97.       endif         
  98.    return ( bRowset )
  99.  
  100.    function tFirst_onClick
  101.    return ( this.parent.form.rowset.first() )
  102.  
  103.    function tPrev_onClick
  104.       local bPrev
  105.       bPrev = this.parent.form.rowset.next(-1)
  106.       if ( not bPrev )
  107.          this.parent.form.rowset.next()
  108.       endif
  109.    return ( bPrev )
  110.  
  111.    function tNext_onClick
  112.       local bNext
  113.       bNext = this.parent.form.rowset.next()
  114.       if ( not bNext )
  115.          this.parent.form.rowset.next(-1)
  116.       endif
  117.    return ( bNext )
  118.  
  119.    function tLast_onClick
  120.    return ( this.parent.form.rowset.last() )
  121.  
  122. endclass
  123.